#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
vector<int> adj[N];
vector<int> vis(N);
vector<int> leaf(N);
bool dfs(int v) {
vis[v] = 1;
int cnt = 0;
for(auto& u : adj[v]) {
if(!vis[u]) {
if(leaf[u] == 1 && u != 1) {
cnt++;
}
if(!dfs(u)) {
return false;
}
}
}
if(cnt > 0 && cnt < 3 || (cnt == 0 && leaf[v] > 1)) {
return false;
}
return true;
}
int main() {
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
int n; cin >> n;
for(int i = 2; i <= n; i++) {
int a; cin >> a;
adj[a].push_back(i);
adj[i].push_back(a);
leaf[i]++;
leaf[a]++;
}
cout << (dfs(1) == true ? "Yes" : "No") << endl;
return 0;
}
5. Longest Palindromic Substring | 3. Longest Substring Without Repeating Characters |
1312. Minimum Insertion Steps to Make a String Palindrome | 1092. Shortest Common Supersequence |
1044. Longest Duplicate Substring | 1032. Stream of Characters |
987. Vertical Order Traversal of a Binary Tree | 952. Largest Component Size by Common Factor |
212. Word Search II | 174. Dungeon Game |
127. Word Ladder | 123. Best Time to Buy and Sell Stock III |
85. Maximal Rectangle | 84. Largest Rectangle in Histogram |
60. Permutation Sequence | 42. Trapping Rain Water |
32. Longest Valid Parentheses | Cutting a material |
Bubble Sort | Number of triangles |
AND path in a binary tree | Factorial equations |
Removal of vertices | Happy segments |
Cyclic shifts | Zoos |
Build a graph | Almost correct bracket sequence |
Count of integers | Differences of the permutations |